package com.example.satokendemospringboot.config;

import cn.dev33.satoken.stp.StpInterface;
import org.springframework.stereotype.Component;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

/**
 * 自定义权限加载接口实现类
 * 保证此类被 SpringBoot 扫描，完
 * 成 Sa-Token 的自定义权限验证扩展
 */
@Component
public class StpInterfaceImpl implements StpInterface {

    /**
     * 返回一个账号所拥有的权限码集合
     */
    @Override
    public List<String> getPermissionList(Object loginId, String loginType) {

        Map<String,List<String>> permissionMap = new HashMap<>();
        List<String> list = new ArrayList<>();
        list.add("user:add");
        list.add("user:update");
        list.add("user:del");
        list.add("user");

        List<String> list1 = new ArrayList<>();
        list1.add("admin:add");
        list1.add("admin:update");
        list1.add("admin:del");
        list1.add("admin");
        permissionMap.put("10001",list);
        permissionMap.put("10002",list1);
        //TODO 根据登录的loginId(登录用户id)去查权限，可以存缓存中，从缓存中取，权限有变动更新缓存
        return permissionMap.get(loginId.toString());
    }

    /**
     * 返回一个账号所拥有的角色标识集合 (权限与角色可分开校验)
     */
    @Override
    public List<String> getRoleList(Object loginId, String loginType) {
        List<String> roleList = new ArrayList<>();
        roleList.add("admin");
        roleList.add("user");
        //TODO 根据登录的loginId(登录用户id)去查角色，可以存缓存，从缓存中取，角色变动更新缓存
        return roleList;
    }

}
